import { z } from "zod";

/**
 * ts 基础类型 => zod类型
 */
export type type2ZodType<T> = 
     T extends number ? z.ZodNumber
  : (T extends boolean ? z.ZodBoolean
  : (T extends string ? z.ZodString
  : (T extends undefined ? z.ZodUndefined
  : (T extends Date ? z.ZodDate
  : (T extends Array<infer T1> ? z.ZodArray<type2ZodType<T1>> /** 数组 */
  : (T extends { [key: string]: any } ? z.ZodObject<{ [key in keyof T]: type2ZodType<T[key]> }> /** 对象 */
  : z.ZodTypeAny)))))) /** 其他匹配不上的 */
